//package com.wiloon.java8x.datadictionary.excel;
//
//import org.apache.poi.ss.usermodel.CellStyle;
//import org.apache.poi.ss.usermodel.Font;
//import org.apache.poi.xssf.usermodel.*;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Service;
//
//import java.io.FileNotFoundException;
//import java.io.FileOutputStream;
//import java.io.IOException;
//
///**
// * Created by Administrator on 2015/5/22.
// */
//
//@Service
//public class DataDictionaryBuilderImpl implements DataDictionaryBuilder {
//    private static Logger logger = LoggerFactory
//            .getLogger(DataDictionaryBuilderImpl.class);
//
//    XSSFWorkbook workbook;
//    private int sheetIndex=-1;
//
//    public DataDictionaryBuilderImpl() {
//        init();
//    }
//
//    private void init() {
//        workbook = new XSSFWorkbook();
//       // workbook.createSheet();
//    }
//
//    @Override
//    public void setBorder(int columnStart, int rowStart, int columnEnd, int rowEnd) {
//        XSSFSheet sheet = workbook.getSheetAt(this.sheetIndex);
//        for (int rowIndex = rowStart; rowIndex < rowEnd; rowIndex++) {
//            XSSFRow row = getRow(sheet, rowIndex);
//            for (int columnIndex = columnStart; columnIndex < columnEnd; columnIndex++) {
//                XSSFCell cell = getCell(row, columnIndex);
//                XSSFCellStyle cellStyle = cell.getCellStyle();
//                cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
//                cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
//                cellStyle.setBorderRight(CellStyle.BORDER_THIN);
//                cellStyle.setBorderTop(CellStyle.BORDER_THIN);
//                cell.setCellStyle(cellStyle);
//            }
//        }
//    }
//
//    @Override
//    public void fillWhiteBackground() {
//        int rowStart = 0;
//        int rowEnd = 50;
//        int columnStart = 0;
//        int columnEnd = 30;
//        XSSFSheet sheet = workbook.getSheetAt(sheetIndex);
//        for (int rowIndex = rowStart; rowIndex < rowEnd; rowIndex++) {
//            XSSFRow row = getRow(sheet, rowIndex);
//            for (int columnIndex = columnStart; columnIndex < columnEnd; columnIndex++) {
//                XSSFCell cell = getCell(row, columnIndex);
//
//                XSSFCellStyle cellStyle = cell.getCellStyle();
//                cellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 255)));
//                cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
//                cell.setCellStyle(cellStyle);
//
//            }
//        }
//    }
//
//    @Override
//    public void setBackgroundColor(XSSFCell cell) {
//        XSSFCellStyle cellStyle = cell.getCellStyle();
//        cellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(204, 204, 255)));
//        cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
//        cell.setCellStyle(cellStyle);
//    }
//
//    @Override
//    public void setCellValue() {
//
//    }
//
//    @Override
//    public void setFont() {
//
//    }
//
//    @Override
//    public XSSFCell getCell() {
//        return null;
//    }
//
//    @Override
//    public XSSFWorkbook getWorkbook() {
//        if (workbook == null) {
//            workbook = new XSSFWorkbook();
//        }
//        return workbook;
//    }
//
//    @Override
//    public XSSFCell createCell(int rowIndex, int columnIndex, String value) {
//        XSSFSheet sheet = workbook.getSheetAt(sheetIndex);
//        XSSFRow row = getRow(sheet, rowIndex);
//        XSSFCell cell = getCell(row, columnIndex);
//        cell.setCellValue(value);
//        return cell;
//    }
//
//    @Override
//    public void setWorkbook(XSSFWorkbook workbook) {
//        this.workbook = workbook;
//    }
//
//    private XSSFRow getRow(XSSFSheet sheet, int rowIndex) {
//        XSSFRow row = sheet.getRow(rowIndex);
//        if (row == null) {
//            row = sheet.createRow(rowIndex);
//        }
//        return row;
//    }
//
//    private XSSFCell getCell(XSSFRow row, int cellIndex) {
//        XSSFCell cell = row.getCell(cellIndex);
//        if (cell == null) {
//            cell = row.createCell(cellIndex);
//            cell.setCellStyle(workbook.createCellStyle());
//        }
//        return cell;
//    }
//
//    private XSSFSheet getSheet(XSSFWorkbook workbook, int sheetIndex) {
//        XSSFSheet sheet;
//        try {
//            sheet = workbook.getSheetAt(sheetIndex);
//            if (sheet == null) {
//                throw new Exception("sheet is null");
//            }
//        } catch (Exception e) {
//            sheet = workbook.createSheet();
//        }
//
//        return sheet;
//
//    }
//
//    @Override
//    public void generateFile() {
//        logger.debug("generateFile");
//        FileOutputStream fileOut = null;
//        try {
//            fileOut = new FileOutputStream("d:\\workbook.xlsx");
//            workbook.write(fileOut);
//            fileOut.close();
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//    }
//
//    @Override
//    public void setFontBold(XSSFCell cell) {
//        Font font = workbook.createFont();
//        font.setBoldweight(Font.BOLDWEIGHT_BOLD);
//
//        XSSFCellStyle cellStyle = cell.getCellStyle();
//        cellStyle.setFont(font);
//        cell.setCellStyle(cellStyle);
//    }
//
//    public int getSheetIndex() {
//        return sheetIndex;
//    }
//
//    public void setSheetIndex(int sheetIndex) {
//        this.sheetIndex = sheetIndex;
//    }
//
//    @Override
//    public void toNextSheet() {
//        sheetIndex++;
//    }
//
//    @Override
//    public void setVerticalCenter(XSSFCell cell) {
//        XSSFCellStyle cellStyle = cell.getCellStyle();
//        cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
//
//        cell.setCellStyle(cellStyle);
//    }
//
//    @Override
//    public void autoSizeColumn() {
//        logger.debug("autoSizeColumn");
//        int sheetCount = workbook.getNumberOfSheets();
//        for (int i = 0; i < sheetCount; i++) {
//            XSSFSheet sheet = workbook.getSheetAt(i);
//            int columnNum = sheet.getRow(0).getPhysicalNumberOfCells();
//            for (int j = 0; j < columnNum; j++) {
//                sheet.autoSizeColumn(j);
//            }
//        }
//    }
//
//    @Override
//    public XSSFSheet createNewSheet() {
//        XSSFSheet cell =getWorkbook().createSheet();
//        toNextSheet();
//        //fillWhiteBackground();
//        return cell;
//    }
//
//    @Override
//    public void setSheetName(String sheetName) {
//        getWorkbook().setSheetName(sheetIndex,sheetName);
//    }
//}
